/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.actions;


import javax.naming.InitialContext;
import javax.servlet.http.HttpServletRequest;
import com.ejb.UsuarioFachadaRemote;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Locale;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;

/**
 *
 * @author victor
 */
public class AltaUComunForm extends org.apache.struts.action.ActionForm {

    private UsuarioFachadaRemote UsuarioFachadaBean;

    private String Nick;
    private String Nombre;
    private String Apellido;
    private String Pass;
    private String Email;
    private String fnac;

    public AltaUComunForm() {  }

    public void set(String Nick, String Nombre, String Apellido, String Pass,
		String Email,String fnac) {

		this.Nick = Nick;
		this.Nombre = Nombre;
		this.Apellido = Apellido;
		this.Pass = Pass;
		this.Email = Email;
                this.fnac = fnac;

	}
    public String getApellido() { return Apellido;    }
    public void setApellido(String Apellido) { this.Apellido = formatear(Apellido, 15);   }

    public String getEmail() { return Email;  }
    public void setEmail(String Email) { this.Email = formatear(Email, 30); }

    public String getNick() { return Nick; }
    public void setNick(String Nick) { this.Nick = formatear(Nick, 15);  }

    public String getNombre() { return Nombre;  }
    public void setNombre(String Nombre) { this.Nombre = formatear(Nombre, 15); }

    public String getPass() { return Pass; }
    public void setPass(String Pass) { this.Pass = formatear(Pass, 15);  }

    public String getfnac() { return fnac; }
    public void setfnac(String fnac) { this.fnac = fnac;  }


    @Override
    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request)
    {

        ActionErrors errors = new ActionErrors();
        if (getNick() == null || getNick().length() < 1 || getNick().contains(" ") )
        {
            errors.add("nick", new ActionMessage("error.nick.requerido"));
        }
        if (getNombre() == null || getNombre().length() < 1)
        {
            errors.add("nombre", new ActionMessage("error.nombre.requerido"));
        }
        if (getApellido() == null || getApellido().length() < 1)
        {
            errors.add("apellido", new ActionMessage("error.apellido.requerido"));
        }
        if (getPass() == null || getPass().length() < 1 || getPass().contains(" "))
        {
            errors.add("pass", new ActionMessage("error.pass.requerido"));
        }
        if (getEmail() == null || getEmail().length() < 4 || getEmail().contains("@")==false || getEmail().contains(" "))
        {
            errors.add("email", new ActionMessage("error.email.requerido"));
        }
        if (getfnac() == null || getfnac().length() < 1)
        {
            errors.add("fnac", new ActionMessage("error.fnac.requerido"));
        }
        else
        {
            if (!isFechaValida(getfnac()))

            try {
                SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy", Locale.getDefault());
                formatoFecha.setLenient(false);
                formatoFecha.parse(getfnac());

            } catch (ParseException ex)
            {
             errors.add("fnac", new ActionMessage("error.fnac.invalida"));
            }
        }

        if (errors.isEmpty()) // Validación ahora en la base de datos
        {
            // Llamada al Enterprise Bean
            try
            {
                UsuarioFachadaBean = (UsuarioFachadaRemote)new InitialContext().lookup("java:comp/env/UsuarioFachadaBean");
            }catch (Exception e) {}
            if (UsuarioFachadaBean!=null)
            {
                if (UsuarioFachadaBean.ExisteNick(getNick()))
                {
                    errors.add("nick", new ActionMessage("error.nick.existe"));
                }
                if (UsuarioFachadaBean.ExisteEmail(getEmail()))
                {
                   errors.add("email", new ActionMessage("error.email.existe"));
                }
            }
        }
        return errors;
    }

    public boolean isFechaValida(String fechax) {
    try {
            SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/mm/yyyy",Locale.getDefault());
            formatoFecha.setLenient(false);
            formatoFecha.parse(fechax);
        }
        catch (ParseException e)
        {
            return false;
        }
        return true;
    }
public String formatear(String texto, int largo)
{
    texto=texto.replaceAll("Ã¡","á");
    texto=texto.replaceAll("Ã","Á");

    texto=texto.replaceAll("Ã©","é");
    texto=texto.replaceAll("Ã","É");

    texto=texto.replaceAll("Ã","Í");
    texto=texto.replaceAll("Ãº","ú");

    texto=texto.replaceAll("Ã","Ú");
    texto=texto.replaceAll("Ã±","ñ");

    texto=texto.replaceAll("Ã","Ñ");
    texto=texto.replaceAll("Ã³","ó");

    texto=texto.replaceAll("Ã","Ó");
    texto=texto.replaceAll("Ã","í");

    texto=texto.replaceAll("­Â­","");
    texto=texto.replaceAll("­","");

    texto=texto.trim();
    if (texto.length()>largo) texto = texto.substring(0, largo);
    return texto;
}


}
